class Solution {
public:
    void xaw(vector<string>& array,string& digits,vector<string>& ret,string& s,int a){
        if(s.size()==digits.size()){
            //string s1(s);
            ret.push_back(s);
            return ;
        }
        string tmp=array[digits[a]-'0'];
        auto it=tmp.begin();
        while(it!=tmp.end()){
            s.push_back(*it);
            xaw(array,digits,ret,s,a+1);
            s.pop_back();
            it++;
        }
        return ;
    }
    vector<string> letterCombinations(string digits) {
        if(digits.size()==0){
            return vector<string>();
        }
        vector<string> array(10);
        vector<string> ret;
        array[2]="abc";
        array[3]="def";
        array[4]="ghi";
        array[5]="jkl";
        array[6]="mno";
        array[7]="pqrs";
        array[8]="tuv";
        array[9]="wxyz";
        string s="";
        xaw(array,digits,ret,s,0);
        return ret;
        // int i=0,j=0;
        // char a,b;
        // while(i<digits.size()){
        //     a='2';
        //     b='a';
        //     while(digits[i]!=a){
        //         a+='1';
        //         b+='3';
        //     }
        //     array[j]
        // }

    }
};
